package od_2024E;


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 题目：
 * file:///C:/Users/Lsz/Desktop/%E5%8D%8E%E4%B8%BAOD%E7%AC%94%E8%AF%95%E5%AE%9D%E5%85%B8/%E5%AE%9D%E5%85%B8/(E%E5%8D%B7,100%E5%88%86)%20-%20%E6%89%8B%E6%9C%BAApp%E9%98%B2%E6%B2%89%E8%BF%B7%E7%B3%BB%E7%BB%9F%EF%BC%88Java%20&%20Python&%20JS%20&%20C++%20&%20C%20%EF%BC%89.html
 * 文档中的解法不对，因为题目还要求了：新加入的app如果和已经注册的两个app的时长都有交际，如果新的app比其中一个app的优先级高，但是比另外一个优先级低的话，是不能注册成功的
 */
public class Test01 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 读取注册app数
        int n = Integer.parseInt(scanner.nextLine());
        // scanner.next() 和 scanner.nextInt()不会消耗换行符，这里是用做消耗残留换行符号使用的
        // scanner.nextLine() 方法作用：读取一行输入数据，直到换行符号，
        List<AppInfo> appList = new ArrayList<>();

        for (int i = 0; i < n; i++) {
            String[] input = scanner.nextLine().split(" ");
            String appName = input[0];
            int priority = Integer.parseInt(input[1]);
            int startTime = timeToMinutes(input[2]);
            int endTime = timeToMinutes(input[3]);

            if (startTime >= endTime) {
                continue;
            }

            boolean canRegister = true;
            List<AppInfo> toRemove = new ArrayList<>();

            for (AppInfo existingApp : appList) {
                if (isOverlap(startTime, endTime, existingApp.startTime, existingApp.endTime)) {
                    if (priority > existingApp.priority) {
                        toRemove.add(existingApp);
                    } else {
                        canRegister = false;
                        break;
                    }
                }
            }

            if (canRegister) {
                appList.removeAll(toRemove);
                appList.add(new AppInfo(appName, priority, startTime, endTime));
            }
        }

        String queryTimeStr = scanner.nextLine();
        int queryTime = timeToMinutes(queryTimeStr);
        String result = "NA";

        for (AppInfo app : appList) {
            if (app.startTime <= queryTime && queryTime < app.endTime) {
                result = app.name;
                break;
            }
        }

        System.out.println(result);
        scanner.close();
    }

    // 定义App类，用于存储App的相关信息
    static class AppInfo {
        String name; // App名称
        int priority; // App优先级
        int startTime; // App允许使用的起始时间（以分钟为单位）
        int endTime; // App允许使用的结束时间（以分钟为单位）

        // App类的构造函数，用于创建App对象
        public AppInfo(String name, int priority, int startTime, int endTime) {
            this.name = name;
            this.priority = priority;
            this.startTime = startTime;
            this.endTime = endTime;
        }
    }

    // 将时间字符串转换为分钟数
    public static int timeToMinutes(String timeStr) {
        String[] parts = timeStr.split(":");
        int hours = Integer.parseInt(parts[0]);
        int minutes = Integer.parseInt(parts[1]);
        return hours * 60 + minutes;
    }

    public static int time2Minutes(String timeStr) {
        String[] split = timeStr.split(":");
        return Integer.parseInt(split[0]) * 60 + Integer.parseInt(split[2]);
    }

    // 判断两个时间段是否有重叠
    public static boolean isOverlap(int start1, int end1, int start2, int end2) {
        return start1 < end2 && start2 < end1;
    }
}
